#ifndef OS_H
#define OS_H

// Support OS: Windows Linux

#ifdef _WIN32
#include <windows.h>
#endif

#define VK_NO_PROTOTYPES
#include <vulkan/vulkan.h>


namespace ErkangShuttle
{
#if defined _WIN32
#define LIBRARY_TYPE HMODULE
#define LoadFunction GetProcAddress
#elif defined __linux
#define LoadFunction dlsym
#endif

    // OS-specific parameters
    struct WindowParameters {
#ifdef VK_USE_PLATFORM_WIN32_KHR
        HINSTANCE           HInstance;
        HWND                HWnd;
#elif defined VK_USE_PLATFORM_XLIB_KHR
        Display*            Dpy;
        Window              Window;
#elif defined VK_USE_PLATFORM_XCB_KHR
        xcb_connection_t*   Connection;
        xcb_window_t        Window;
#endif
    };

}

#endif // OS_H